前篇文章有提到,在 kintone 可以使用 Javascript 進行客製化開發,在開發期間,最重要的兩個東西就是 kintone JavaScript API
以及 kintone Rest API
,這篇文章會針對這兩個東西來做介紹。
kintone JavaScript API 提供了各式各樣的事件及方法,其中包含事件註冊,獲取特定資訊、隱藏欄位、取得 DOM 等等,這些都歸類在 kintone JavaScript API,根據官網的介紹,可以分成以下幾種:
接著來介紹幾個常用的 API。
在 kintone 中想要讓某個時機點觸發某個事件,就需要使用到 kintone.events.on
這個功能,這就像在寫 JS 中的 addEventListener
一樣。可以理解為監聽某事件。
例如以 app.record.index.show
(顯示清單畫面後)這個事件來說,寫法會像下面這樣:
kintone.events.on('app.record.index.show', (event) => {
// 事件觸發後要做的事情 ...
})
接著只要觸發 kintone.events.on
之後,就會執行後面的 callback。也就是進到下圖的網頁之後觸發事件:
事件的種類也分很多種,例如顯示某個畫面時觸發、流程管理到某個流程時觸發、儲存成功後觸發...等,可以依照自己想要的時機點來做開發。
當我們會需要取得使用者的身分、或是需要拿到某個應用程式的 ID,這時候就需要用到 獲取/設定資訊
系列的 API,例如:
kintone.app.getId()
:取得當前應用程式 ID。kintone.app.record.get()
:取得當前 Record 所有欄位的值。kintone.getLoginUser()
:取得當前使用者資訊。開發的時候,如果不想讓某些身分的使用者看到欄位,就可以透過客製化開發的方式將某些欄位隱藏,或者是想要在應用程式做分頁切換的時候,也很適合用到這個功能。
kintone.app.record.setFieldShown()
:顯示或隱藏欄位。kintone.app.record.setGroupFieldOpen()
:顯示或隱藏群組欄位。官方文件:https://cybozu.dev/zh-tw/kintone/docs/js-api/#get-element
有時候我們會需要對 kintone 的空白欄位進行客製化,例如把空白欄位變成按鈕等,所以首先要做的事情就是要取得這個 DOM 元素。不過在每個事件底下都有對應各自的 DOM 元素抓取方法,會這樣是因為不是每個頁面都長得一模一樣。
像是獲取選單的右側元素,使用的是 kintone.app.getHeaderMenuSpaceElement()
;入口網站的上部元素則是 kintone.portal.getContentSpaceElement()
,因此在抓元素的時候會先需要看自己在哪個頁面 / 事件,再根據頁面抓 DOM。
使用 kintone REST API,根據對應的 HTTP Method,我們可以對資料做增刪改查,包括欄位、紀錄(Record)、清單等等,分類如下:
用法就跟我們在前端呼叫 API 一樣,以下是最基本呼叫 API 的用法:
kintone.events.on("app.record.detail.show", () => {
(async () => {
try {
const response = await fetch("/k/v1/records.json?app=77", {
headers: {
"X-Requested-With": "XMLHttpRequest",
},
});
const data = await response.json();
console.log(data);
} catch (e) {
// 錯誤處理 ...
}
})();
});
通常開發上最常用到的是記錄(Record)系列的 API,我們很常會對每筆資料去做增刪改查,像是對關聯的資料進行更新、觸發某個事件後新增資料到其他 APP 等等。